package com.collabscm.waf.exception;

import java.io.IOException;
import java.io.PrintStream;
import java.io.PrintWriter;

/**
 * 验证失败，此为失败的父类，主要控制Java堆栈不要打印出来，仅作为是程序的另一个出口而已，能提示一些信息。
 *
 * @author Zeng Raoxing
 */
public class ValidationFailure extends RuntimeException {
	private static final long serialVersionUID = 1L;
	/**
	 * 验证的目标类
	 */
	protected Class<?> validationClass;
	
	public ValidationFailure(Class<?> validationClass) {
		this.validationClass = validationClass;
	}
	
	/**
	 * 得到验证的目标类
	 */
	public Class<?> getValidationClass() {
		return validationClass;
	}
//-----------下面均为覆盖Throwable中的默认方法，都是防止进行堆栈的打印（堆栈是Exception消耗最大的一块）
	public final void printStackTrace(PrintStream s) {
		s.print("此为验证失败，不需要打印堆栈信息。");
	}
	
	public final void printStackTrace(PrintWriter s) {
		s.print("此为验证失败，不需要打印堆栈信息。");
	}
	
	//覆盖Throwable的writeObject，不填充堆栈信息
	private synchronized void writeObject(java.io.ObjectOutputStream s) throws IOException {
		s.defaultWriteObject();
	}

}
